% !Mode:: "TeX:UTF-8"

\section{项目设计与实现}

\subsection{硬件设计}

\subsubsection{系统总体架构}
本系统以STM32F103C8T6最小系统板为核心控制单元，整合OLED显示模块、红外接收模块、电机及电机驱动芯片，实现信号接收、数据处理、状态显示与电机控制的一体化功能。系统架构如图  

   \begin{figure}[h] \centering
    \includegraphics[width=0.6\textwidth]{figures/system.pdf}
    \caption{系统总体架构：最小系统板、驱动芯片、OLED、直流电机}
    \end{figure}
   
\subsubsection{主控制器模块}
选用STM32F103C8T6微控制器作为主控芯片，主要特性包括：
- 72MHz Cortex-M3内核
- 64KB Flash, 20KB SRAM
- 3个通用定时器（TIM2/TIM3/TIM4）
- 丰富的GPIO接口
- 12位ADC转换器

\subsubsection{红外接收模块}
采用HX1838B红外接收模块，主要特性：
\begin{itemize}
    \item 工作电压：2.7~5.5V
    \item 接收频率：38kHz
    \item 静态电流：0.8~1.5mA
    \item 数字信号输出：3线制接口
    \item 连接方式：\texttt{OUT}引脚 $\rightarrow$ \texttt{PB14}（\texttt{TIM3\_CH1}），通过定时器输入捕获功能解码信号
\end{itemize}

\subsubsection{电机驱动模块}
\paragraph{TB6612电机驱动方案}
采用TB6612驱动芯片驱动6V直流风扇电机：
\begin{itemize}
    \item \texttt{AIN1/AIN2} $\rightarrow$ \texttt{PA4/PA5}
    \item \texttt{PWMA} $\rightarrow$ \texttt{PA2}（\texttt{TIM2\_CH1} PWM输出）
\end{itemize}
通过调节PWM占空比实现四档调速（低：20\%、中：40\%、高：60\%、满：70\%）并通过调控GPIO口的高低电平改变AIN1和AIN2的极性，进而控制电机正反转和停止。

\subsubsection{电源模块}
设计双电源供电方案：
- 主控电路：AMS1117-3.3V稳压芯片，输入5V→输出3.3V
- 电机电路：TB6612驱动模块，输入5V→输出5V
- USB接口提供5V调试电源

\subsubsection{用户指示模块}
- OLED通过IIC协议进行数据传输，由主控芯片stm32F103C8T6充当主机，向从机OLED屏幕传输数据。OLED屏幕显示档位：Off（关闭）、Low Speed（一档）、Medium Speed（ 二档）、High Speed（三档）、Max Speed（四档）

\subsection{软件设计}

\subsubsection{系统软件架构}
软件采用分层设计：
1. 驱动层：红外解码、PWM输出、定时器配置
2. 应用层：主控制逻辑、状态管理、用户接口

\subsubsection{主程序流程}
系统采用中断驱动+状态机设计：
\begin{enumerate}
    \item 系统初始化（时钟、GPIO、定时器、中断）
    \item 进入主循环，检测系统状态
    \item 红外中断服务程序处理遥控信号
    \item 定时器中断处理PWM输出
    \item 更新OLED显示屏信息
\end{enumerate}

\subsubsection{红外解码协议实现}
使用NEC协议解码，关键参数：
- 引导码：9ms高电平+4.5ms低电平
- 数据码：0.56ms高电平+0.56ms/1.69ms低电平
- 32位数据传输（地址码+命令码+反码）

\begin{center}
    \resizebox{0.95\textwidth}{!}{
    \begin{tabular}{|l|l|l|}
      \hline
      \textbf{按键功能} & \textbf{红外编码值} & \textbf{系统响应} \\
      \hline
      风扇关闭 & 16750695 & 关闭风扇 \\
      \hline
      一档风 & 16753245 & 设置风速档位一档 \\
      \hline
      二档风 & 16736925 & 设置风速档位二档） \\
      \hline
      三档风 & 16769565 & 设置风速档位三档 \\
      \hline
      四档风 & 16720605 & 设置风速档位四档 \\
      \hline
    \end{tabular}
    }
  \end{center}

\subsection{代码介绍}

\subsubsection{初始化和配置}
	OLEDInit();		//OLED初始化
	MotorInit();		//直流电机初始化
	IRInit();			//红外模块初始化
	TimerInit();		//计时器初始化（红外遥控部分）


\begin{itemize}
 